package edu.gdkm.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/** * @Target
 定义注解作用的目标，比如作用于类、属性、或方法等，默认可用于任何地方 *
 @Target(ElementType.TYPE)
  * 对应ElementType
 参数值适用范围如下：
  * ElementType.TYPE: 类、接口、注解、 enum
  * ElementType.CONSTRUCTOR:  构造函数
  * ElementType.FIELD:  成员变量、对象、属性、枚举的常量
  * ElementType.LOCAL_VARIABLE:  局部变量
  * ElementType.METHOD:  方法
  * ElementType.PACKAGE:  包
  * ElementType.PARAMETER:  参数
  * ElementType.ANNOTATION_TYPE): 注解
  * ElementType.TYPE_PARAMETER：类型参数，表示这个注解可以用在 Type的声明式前,jdk1.8
 引入。
 ElementType.TYPE_USE：类型的注解，表示这个注解可以用在所有使用Type的地方（如：泛型，类型转换等），jdk1.8
 引入。
  * */
@Target(ElementType.METHOD)
/**  RetentionPolicy
 的不同策略对应的生命周期如下：
 *  RetentionPolicy.SOURCE : 仅存在于源代码中，编译阶段会被丢弃，不会包含于class字节码文件中。@Override, @SuppressWarnings
 都属于这类注解。
 * RetentionPolicy.CLASS : 默认策略，在class字节码文件中存在，在类加载的时被丢弃，运行时无法获取到。
 * RetentionPolicy.RUNTIME :  始终不会丢弃，可以使用反射获得该注解的信息。自定义的注解最常用的使用方式。
 *
 * */
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginInterceptor {
}
